package top.littlejiang.onlinexam.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import top.littlejiang.onlinexam.common.base.BasePage;
import top.littlejiang.onlinexam.entity.OlexamClass;
import top.littlejiang.onlinexam.entity.OlexamCourse;
import top.littlejiang.onlinexam.common.base.BaseService;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 课程表 服务类
 * </p>
 *
 * @author chen
 * @since 2021-03-11
 */
public interface OlexamCourseService extends BaseService<OlexamCourse> {

    /**
     * 分页查询
     * @param page
     * @return
     */
    IPage<OlexamCourse> getCourseListPage(BasePage<OlexamCourse> page);

    /**
     * 更新或新增数据
     * @param course
     */
    void insertOrUpdate(OlexamCourse course);

    /**
     * 根据授课老师id，查询所有课程
     * @param userId
     * @return
     */
    List<String> selectByteacher(Integer userId);

    /**
     * 根据授课老师id，课程名，查询所有课程id
     * @param userId
     * @param courseName
     * @return
     */
    List<Integer> selectIdsByTeacher(Integer userId, String courseName);

    /**
     * 根据用户id，课程名，查询所有课程id
     * 表 user_course
     * @param userId
     * @param courseName
     * @return
     */
    List<Serializable> selectIdsByUser(Integer userId, String courseName);

    /**
     * 根据用户id 查找去重后的课程名
     * @param userId
     * @return
     */
    List<String> selectByUser(Integer userId);

    /**
     * 根据课程名查找对应班级
     * @param courseName
     * @return
     */
    List<OlexamClass> getClassByCourse(String courseName);

    /**
     * 根据课程名,班级查找id
     *
     * @param classId
     * @param courseName
     * @return
     */
    List<Serializable> getIdsByClass(Integer classId, String courseName);

    /**
     * 删除课程及用户课程对应关系
     * @param ids
     */
    void delete(List<Serializable> ids);
}
